Berechnung in Excel durchführen

Dieses Programm startet Excel im Hintergrund mit einer Datei, in der eine Formel hinterlegt ist. Per OLE werden zwei Werte nach Excel übergeben und das Ergebnis der Berechnung aus diesen zwei Werten wird an R/3 zurückgeliefert.

Das Programm kann gut dazu verwendet werden, um komplexe bereits bestehende Berechnungen weiterhin in Excel ausführen zu lassen. 


Die Eingabe der Formel in C1

REPORT ztestole NO STANDARD PAGE HEADING.
*====================================================================*
*                                                                    *
*                   
https://tricktresor.com                       *
*                                                                    *
*====================================================================*
*
* Durchführen einer Berechnung in einem Excel-Arbeitsblatt.
*
* Erstellen Sie eine Excel-Datei, in der in Zelle
* C1 die Formel “=A1+B1” steht.
* Die Zellen A1 und B1 werden durch das Programm übergeben.
* Die Zelle C1, in der dann das Ergebnis steht, wird wieder ausgelesen
* und ausgegeben.
*
* Mit freundlicher Unterstützung von OliverS
*====================================================================*


* Excel-Sheet
PARAMETERS: var_file(30) DEFAULT ‘C:/temp/testole.xls’ LOWER CASE.

* Ergebnis
DATA: result(50).

TYPE-POOLS ole2 .

* Handles für OLE Objekte
DATA:
  h_excel         TYPE ole2_object, ” Excel object
  h_book          TYPE ole2_object, ” list of workbooks
  h_active_window TYPE ole2_object,
  cell_out        TYPE ole2_object,                        ” cell
  cell_in         TYPE ole2_object.                        ” cell

*———————————————————-
START-OF-SELECTION.
* start Excel
  CREATE OBJECT h_excel ‘EXCEL.APPLICATION’.

* Excel nicht sichtbar ausführen
  SET PROPERTY OF h_excel ‘Visible’ = 0.

* Arbeitsblatt auswählen
  CALL METHOD OF h_excel ‘Workbooks’ = h_book.

* bestehendes File öffnen
  CALL METHOD OF h_book ‘OPEN’
       EXPORTING
          #1 = var_file.


*———————————————————–
* 1. Zelle, an die Wert übergeben wird (A1)
  CALL METHOD OF h_excel ‘Cells’ = cell_out
       EXPORTING
          #1 = 1                                            “Zeile
          #2 = 1.                                           “Spalte

* Zellinhalt A1 setzen
  SET PROPERTY OF cell_out ‘Value’ = ‘200’.

*———————————————————–
* 2. Zelle, an die Wert übergeben wird (B2)
  CALL METHOD OF h_excel ‘Cells’ = cell_out
       EXPORTING
          #1 = 1                                            “Zeile
          #2 = 2.                                           “Spalte

* Zellinhalt B1 setzen
  SET PROPERTY OF cell_out ‘Value’ = ‘500’.

* Object freigeben
  FREE OBJECT cell_out.

*———————————————————–
* Zelle, aus der Ergebnis gelesen wird (C1)
  CALL METHOD OF h_excel ‘Cells’ = cell_in
       EXPORTING
          #1 = 1                                            “Zeile
          #2 = 3.                                           “Spalte

* Zellinhalt lesen
  GET PROPERTY OF cell_in ‘Value’ = result.

* Objekt freigeben
  FREE OBJECT cell_in.

* Excel beenden
*———————————————————————–
* see http://support.microsoft.com/default.aspx?scid=kb;de;503541
* Close without saving

* get active window
  CALL METHOD OF h_excel ‘ACTIVEWINDOW’ = h_active_window.
* set active_window visible
 
SET PROPERTY OF h_active_window ‘VISIBLE’ = 1.
*———————————————————————–

* close active_window without saving
 
CALL METHOD OF h_active_window ‘CLOSE’
       EXPORTING #1 = 0.

* close Excel
 
CALL METHOD OF h_excel ‘QUIT’.
 
FREE OBJECT: h_excel, h_active_window.

  WRITE: / ‘Ergebnis der Berechnung in Excel:’, result.

Enno Wulff

Leave a Comment